阔别数月 踏雪归来:Express 第二弹之 Sequelizejs + Mysql

Node开发过程中一些工具:

  • sequelizejs: 基于promise的一个关系数据库ORM
  • squel.js: 基于Javascript的SQL查询构建器
  • node-only: return whitelisted properties of an object
  • wga: a generator, async/await wrapper
  • lodash: 提供很多干净,高性能的实用方法,减少LOC,改善应用程序逻辑清晰
  • jsonwebtoken: token处理
  • pinyin: 轻量级的Node拼音库,支持中文,拼音双向转换及多种转化方式
  • request-promise: 将request访问第三方/爬虫 转换成promise方式
  • es6-promisify: Convents callback-based functions to Promise-based functions.
  • co: Generator based control flow goodness for nodejs and the browser,using promises,letting you write non-blocking code in a nice-ish way.将generator函数转换成primise对象,使用.then的形式。
  • thinkify: 配合co进行使用
  • fluent-ffmpeg:进行视频转换,获取视频缩略图
  • aws-sdk: 亚马逊云存储服务
  • multer: nodejs中间件,上传文件
  • apidoc: 生成API文档
  • grunt: 自动化构建工具
  • glup: 基于流的自动化构建工具
  • webpack: 自动化构建工具
  • node-tesseract: 图像处理工具,可以进行图像识别(验证码识别)
  • forever: node进程守护者
  • images: Node.js 轻量级跨平台图像编解码库(加水印等)

在我们接下来的实例中将回归采用关系型数据库Mysql, 在这里我选择sequelize作为我们的ORM。

安装: cnpm install sequelize –save-dev
使用: 先直接上代码,然后再进行解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
"use strict";

import express from "express";

import Sequelize from 'sequelize';

import co from 'co';

import wga from 'wga';

const app = express();

// 配置 连接数据库
let sequelize = new Sequelize(
'test',
'root',
'',
{
'dialect':'mysql',
'host':'localhost',
'port':3306
}
);

//定义model 映射数据表
let User = sequelize.define('student',{
name:{type: Sequelize.STRING},//数据类型
age:{type: Sequelize.INTEGER}
});

// 将Model 同步到数据库
co(function* (){
yield User.sync({force: true});
console.log('Database prepared already');
}).catch( err => console.log(err) );


app.get('/',(req, res, next) => {
res.send("hello baby");
next();
});

app.get('/students', wga(function* (req, res) {
let stds = yield User.findAll();
res.json(stds);
}))

app.use((req, res, next) => {
let err = new Error('Not Found');
err.status = 404;
next(err);
});

let server = app.listen(8081,() => {
let host = server.address().address;
let port = server.address().port;
console.log("服务启动成功,访问地址为 http://%s:%s",host,port);
});

首先通过new Sequelize进行配置连接我们的数据库;

  • test: 指的是我们要连接的数据库
  • root: 用户名,接下里的一个参数为密码,我这里的密码为空
  • dialect: 指的是我们使用的数据库类型,这里我使用的是mysql数据库
  • host 和 port 就不用多说了

接下来就是创建Model(对应的是数据库中的表),然后将Model同步到数据库中,这样就可以进行数据库的操作了。
源码参见:https://github.com/huleile/express-sequelize-sample

引自: 网易博客(奔跑吧~昭熙小乐)